package com.jrx.anytxn.param.service.product;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.product.PrWaiveInterestTableReq;
import com.jrx.anytxn.param.dto.product.PrWaiveInterestTableRes;
import com.jrx.anytxn.param.entity.PrWaiveInterestTable;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 贴息利率表 业务接口
 *
 * @author yf
 * date 2020/2/24 0024
 * @version V1.0
 **/
public interface IPrWaiveInterestTableService {

    /**
     * 根据租户id和贴息利率表id查询信息
     *
     * @param tenantId   租户id
     * @param interestId 表id
     * @return com.jrx.anytxn.param.dto.product.PrWaiveInterestTableRes
     * @author fan.yang
     * date: 2020/2/24 0024 上午 11:21
     */
    PrWaiveInterestTableRes findByTenIdAndInterestId(String tenantId, String interestId) throws TxnException;

    /**
     * 根据租户id查询所有信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户id
     * @return com.jrx.anytxn.i18n.response.TxnPage<com.jrx.anytxn.param.dto.product.PrWaiveInterestTableRes>
     * @author fan.yang
     * date: 2020/2/24 0024 上午 11:22
     */
    TxnPage<PrWaiveInterestTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 增加贴息利率表信息
     *
     * @param prWaiveInterestTableReq 请求参数
     * @return com.jrx.anytxn.param.dto.product.PrWaiveInterestTableRes
     * @author fan.yang
     * date: 2020/2/24 0024 上午 11:22
     */
    PrWaiveInterestTableRes addWaiveInterestTable(PrWaiveInterestTableReq prWaiveInterestTableReq) throws TxnException;

    /**
     * 编辑贴息利率表参数
     *
     * @param prWaiveInterestTableReq 请求参数
     * @return com.jrx.anytxn.param.dto.product.PrWaiveInterestTableRes
     * @author fan.yang
     * date: 2020/2/24 0024 上午 11:22
     */
    PrWaiveInterestTableRes modifyWaiveInterestTable(PrWaiveInterestTableReq prWaiveInterestTableReq) throws TxnException;

    /**
     * 根据租户id和表id删除此信息
     *
     * @param tenantId   租户id
     * @param interestId 表id
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2020/2/24 0024 上午 11:22
     */
    Boolean removeByTenIdAndInterestId(String tenantId, String interestId) throws TxnException;

    /***
     *  查询贴息利率参数
     * @param interestId
     * @param tenantId
     * @return
     * @throws TxnBizException
     */
    PrWaiveInterestTable findWaiveInterestByInterestId(String interestId, String tenantId) throws TxnBizException, TxnException;

    /**
     * 贴息日利率计算
     *
     * @param prWaiveInterestTable 贴息利率信息
     * @param businessDate    当前业务日期
     * @return 日利率
     */
    BigDecimal getWaiveDailyRate(PrWaiveInterestTable prWaiveInterestTable, Date businessDate);

    /**
     * 贴息年利率计算
     *
     * @param prWaiveInterestTable 贴息利率信息
     * @return 日利率
     */
    BigDecimal getYearRate(PrWaiveInterestTable prWaiveInterestTable);
}
